package cdu.sl.aichatdemo.mapstruct;


import cdu.sl.aichatdemo.pojo.dto.user.UserLoginDTO;
import cdu.sl.aichatdemo.pojo.dto.user.UserUpdateInfoDTO;
import cdu.sl.aichatdemo.pojo.entity.User;
import cdu.sl.aichatdemo.pojo.vo.UserLoginVO;
import cdu.sl.aichatdemo.pojo.vo.UserProfileVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper(componentModel = "spring")
public interface UserMap {
    UserMap INSTANCE = Mappers.getMapper(UserMap.class);

    /**
     * UserLoginDTO转数据库实体
     *
     * @param userLoginDTO dto
     * @return 数据库实体
     */
    User toEntityFromUserLoginDTO(UserLoginDTO userLoginDTO);


    /**
     * UserUpdateInfoDTO转数据库实体
     *
     * @param userUpdateInfoDTO dto
     * @return 数据库实体
     */
    User toEntityUserUpdateInfoDTO(UserUpdateInfoDTO userUpdateInfoDTO);


    /**
     * 数据库实体转Login视图模型
     *
     * @param user 数据库实体
     * @return 登录视图模型
     */
    UserLoginVO toLoginVO(User user);


    /**
     * 数据库实体转Profile视图模型
     *
     * @param user 数据库实体
     * @return 个人资料视图模型
     */
    UserProfileVO toProfileVO(User user);


}
